103 research outputs found

    An Open Challenge Problem Repository for Systems Supporting Binders

    Get PDF
    A variety of logical frameworks support the use of higher-order abstract syntax in representing formal systems; however, each system has its own set of benchmarks. Even worse, general proof assistants that provide special libraries for dealing with binders offer a very limited evaluation of such libraries, and the examples given often do not exercise and stress-test key aspects that arise in the presence of binders. In this paper we design an open repository ORBI (Open challenge problem Repository for systems supporting reasoning with BInders). We believe the field of reasoning about languages with binders has matured, and a common set of benchmarks provides an important basis for evaluation and qualitative comparison of different systems and libraries that support binders, and it will help to advance the field.Comment: In Proceedings LFMTP 2015, arXiv:1507.0759

    Implementing Theorem Provers in Logic Programming

    Get PDF
    Logic programming languages have many characteristics that indicate that they should serve as good implementation languages for theorem provers. For example, they are based on search and unification which are also fundamental to theorem proving. We show how an extended logic programming language can be used to implement theorem provers and other aspects of proof systems for a variety of logics. In this language first-order terms are replaced with simply-typed λ-terms, and thus unification becomes higher-order unification. Also, implication and universal quantification are allowed in goals. We illustrate that inference rules can be very naturally specified, and that the primitive search operations of this language correspond to those needed for searching for proofs. We argue on several levels that this extended logic programming language provides a very suitable environment for implementing tactic style theorem provers. Such theorem provers provide extensive capabilities for integrating techniques for automated theorem proving into an interactive proof environment. We are also concerned with representing proofs as objects. We illustrate how such objects can be constructed and manipulated in the logic programming setting. Finally, we propose extensions to tactic style theorem provers in working toward the goal of developing an interactive theorem proving environment that provides a user with many tools and techniques for building and manipulating proofs, and that integrates sophisticated capabilities for automated proof discovery. Many of the theorem provers we present have been implemented in the higher-order logic programming language λProlog

    Using Extended Tactics to Do Proof Transformations

    Get PDF
    In this thesis we develop a comprehensive human-oriented theorem proving system that integrates several different proof systems. The main theorem proving environment centers around a natural Gentzen first-order logic system. This allows construction of natural proofs, encourages user involvement in the search for proofs, and facilitates understanding of the resulting proofs. We integrate more abstract automatically generated proofs such as resolution refutations by transforming them to proofs in the Gentzen system. Expansion trees are another proof system used as an intermediate stage in transformations between the abstract and natural systems. They are a compact representation useful for transformations and other computations. We develop a programming language approach to theorem proving based on tactics and tacticals. Our extended tactics provide a method for doing proof transformations, as well as facilitate interactive theorem proving, allowing full integration of interactive and automatic theorem proving. In the system, we explicitly represent proofs in each proof system and view expansion tree proofs as types for Gentzen proof terms. This explicit proof representation allows proofs to be manipulated as meaningful data objects and used in various computations. For example, the proof terms in the natural Gentzen system can be used to obtain natural language explanations of proofs. We foresee several applications for this kind of theorem proving system, such as use as a logic tutor, a tool for doing mathematics, or an enhanced reasoner and explanation facility for existing A1 systems

    Explaining Modal Logic Proofs

    Get PDF
    There has recently been considerable progress in the area of using computers as a tool for theorem proving. In this paper we focus on one facet of human-computer interaction in such systems: generating natural language explanations from proofs. We first discuss the X proof system - a tactic style theorem proving system for first-order logic with a collection of inference rules corresponding to human-oriented proof techniques. In X, proofs are stored as they are discovered using a structured term representation. We describe a method for producing natural language explanations of proofs via a simple mapping algorithm from proof structures to text. Nonclassical or specialized logics are often used in specialized applications. For example, modal logics are often used to reason about time and knowledge, and inheritance theories are often developed for classification systems. The form of, and explanations for, proofs in these systems should be tailored to reflect their special features. In this paper, we focus on the extension of X to incorporate proofs in modal logic, and on the different kinds of explanations of modal proofs that can be produced to meet the needs of different users

    Specifying Theorem Provers in a Higher-Order Logic Programming Language

    Get PDF
    Since logic programming systems directly implement search and unification and since these operations are essential for the implementation of most theorem provers, logic programming languages should make ideal implementation languages for theorem provers. We shall argue that this is indeed the case if the logic programming language is extended in several ways. We present an extended logic programming language where first-order terms are replaced with simply-typed λ-terms, higher-order unification replaces firstorder unification, and implication and universal quantification are allowed in queries and the bodies of clauses. This language naturally specifies inference rules for various proof systems. The primitive search operations required to search for proofs generally have very simple implementations using the logical connectives of this extended logic programming language. Higher-order unification, which provides sophisticated pattern matching on formulas and proofs, can be used to determine when and at what instance an inference rule can be employed in the search for a proof. Tactics and tacticals, which provide a framework for high-level control over search, can also be directly implemented in this extended language. The theorem provers presented in this paper have been implemented in the higher-order logic programming language λProlog

    Encoding a Dependent-Type Lambda-Calculus in a Logic Programming Language

    Get PDF
    Various forms of typed λ-calculi have been proposed as specification languages for representing wide varieties of object logics. The logical framework, LF, is an example of such a dependent-type λ-calculus. A small subset of intuitionistic logic with quantification over simply typed λ-calculus has also been proposed as a framework for specifying general logics. The logic of hereditary Harrop formulas with quantification at all non-predicate types, denoted here as hhω, is such a meta-logic that has been implemented in both the Isabelle theorem prover and the λProlog logic programming language. Both frameworks provide for specifications of logics in which details involved with free and bound variable occurrences, substitutions, eigenvariables, and the scope of assumptions within object logics are handled correctly and elegantly at the meta level. In this paper, we show how LF can be encoded into hhω in a direct and natural way by mapping the typing judgments in LF into propositions in the logic of hhω. This translation establishes a very strong connection between these two languages: the order of quantification in an LF signature is exactly the order of a set of hhω clauses, and the proofs in one system correspond directly to proofs in the other system. Relating these two languages makes it possible to provide implementations of proof checkers and theorem provers for logics specified in LF by using standard logic programming techniques which can be used to implement hhω
    corecore